function tryCreateLoader() {
	
	this.findLoadedClass = function(class_name) {
		for (var i = the_itpt.classes.length - 1; i >= 0; --i) if (the_itpt.classes[i].getName() == class_name) 
			return the_itpt.classes[i];
		return null;
	}	
	this.tryGetFullName = function(class_name) {
    
    
		class_name = class_name + ".class";
        var inURL = "http://0.0.0.0:8000/"+class_name;
        return inURL;
        
        
		try { 
			netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
		} catch (e) { 
			//throw "Permission denied when reading file";
		}
		var result = null;
		for (idx in the_paths.paths) {
			var path = the_paths.paths[idx];
			//alert(path);
			var full_name = path + class_name;
			var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
			//alert(full_name);
			file.initWithPath(full_name);
			if (file.exists()) 
				if (result == null) result = full_name;
				else 
					throw "Ambiguous classes: (1): " + result + " (2): " + full_name; //TODO standard exception
		}
		if (result == null)
			throw "NoClassDefFoundError"; //TODO standard exception
		return result;
	}
	
	this.tryGetFileContent = function(full_name) {
		//TODO!! IE & Chrome
		//TODO!! reference codes?
        
        var o = new XMLHttpRequest();
        o.open("GET",full_name,false);
        o.overrideMimeType('text\/plain; charset=x-user-defined');
        o.setRequestHeader("User-Agent",navigator.userAgent);
        o.send(null);
        if(o.status == 200) 
            return o.responseText;
        else 
            throw "NoClassDefFoundError";
        
		try { 
			netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
		} catch (e) { 
			throw ("Permission denied when reading file: " + full_name);
		}
		var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
		file.initWithPath(full_name);
		var istream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
		istream.init(file, -1, -1, false);
		var bstream = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
		bstream.setInputStream(istream);

		var file_content = bstream.readBytes(bstream.available());

		return file_content;
	}
	
	this.tryVerify = function(parse_result) {
		//TODO!!
	}
	
	this.tryPrepare = function(new_class) {
		//TODO!!
	}
	
	this.tryLoadAndLinkClass = function(class_name) {
		var the_class = this.findLoadedClass(class_name);
		if (the_class != null) return the_class;
	
		var full_name = this.tryGetFullName(class_name);
		alert(full_name);
		var file_content = this.tryGetFileContent(full_name); //binary
		//alert(file_content.length + ": " + file_content);
		var parse_result = tryParseClassFile(file_content);
		this.tryVerify(parse_result);
		var new_class = new tryCreateClass(class_name, parse_result);
		this.tryPrepare(new_class);
		
		the_itpt.classes.push(new_class);
		
		return new_class;
	}
}
